﻿/*****************************************************
**Copyright(C), 2021-2022, Ciqtek Technology.
**Version:     1.0
**Author:      hujr
**Date:        2021/12/03
**Description: SnapGroupView 抓图显示区域分组视图
*****************************************************/

#ifndef SNAPGROUPVIEW_H
#define SNAPGROUPVIEW_H

#include "../../ofuidll_global.h"

#include "SnapImgDef.h"

#include <QWidget>
#include <QLabel>

namespace OfUI {

	struct SnapData;
	class FlowLayout;
	class SnapImgItem;

	class OFUIDLL_EXPORT SnapGroupView : public QWidget
	{
		Q_OBJECT

	public:
		explicit SnapGroupView(QWidget *parent = Q_NULLPTR);
		~SnapGroupView();

	public:
		/**
		 * @brief  setGroupType 设置数据分组类型
		 * @param  eType
		 * @return void
		 */
		void setGroupType(const GroupType& eType);

		/**
		 * @brief  getGroupType 获取数据分组类型
		 * @return GroupType
		 */
		GroupType getGroupType() const;

		/**
		 * @brief  setGroup 设置组
		 * @param  group
		 * @param  title
		 * @return void
		 */
		void setGroup(const SnapDataGroup& group, const QString& title);

		/**
		 * @brief  getGroup 获取数据项
		 * @return SnapDataGroup
		 */
		SnapDataGroup getGroup();

		/**
		 * @brief  getCount 获取Item 总数
		 * @return int
		 */
		int getCount() const;

		/**
		 * @brief  findItemById 通过Id查找Item, 不存在则返回nullptr
		 * @param  &
		 * @return SnapImgItem*
		 */
		SnapImgItem* findItemById(const int&);

		/**
		 * @brief  addItem 添加Item
		 * @param  *
		 * @return void
		 */
		void addItem(SnapImgItem*);

		/**
		 * @brief  takeItemByIndex 通过索引将Item从布局中弹出，并返回Item
		 * @param
		 * @return SnapImgItem*
		 */
		SnapImgItem* takeItemByIndex(int);

		/**
		 * @brief  takeItemById 通过Id将Item从布局中弹出，并返回Item
		 * @param  &
		 * @return SnapImgItem*
		 */
		SnapImgItem* takeItemById(const int&);

	private:
		/**
		 * @brief  initForm 窗口初始化
		 * @return void
		 */
		void initForm();

	private:
		/** 标题Label
		 */
		QLabel* m_pTitleLabel;

		/** 流布局
		 */
		FlowLayout* m_pFlowLayout;

		/** 分组类型
		 */
		GroupType m_eGroupType;

		/** 组数据
		 */
		SnapDataGroup m_group;
	};

}

#endif // SNAPGROUPVIEW_H
